package com.atguigu.rabbitmq.five;

import com.atguigu.rabbitmq.utils.RabbitMqutils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class ReceiveLogs02 {


    //交换机的名字
    public static final String EXCHANGE_NAME = "logs";

    public static void main(String[] args) throws IOException, TimeoutException {
        Channel channel = RabbitMqutils.getChannel();
        //声明一个交换机
        /**
         * 1.交换机的名字
         * 2.类型 fanout 主要练习的就是他
         */
        channel.exchangeDeclare(EXCHANGE_NAME, "fanout");

        /**
         * 声明一个队列  临时的（队列的名称随机的）
         * 连接的时候就在 不连接的时候就不在了
         * 断开队列的时候自动删除
         */

        String queueName = channel.queueDeclare().getQueue();
        /**
         * 绑定交换机与队列
         * 1.队列名称
         * 2.交换机的名称
         * 3.routingkey 空 可以空
         */
        channel.queueBind(queueName, EXCHANGE_NAME, "");
        System.out.println("等待接受消息把接受到的消息打印到屏幕上面....");

        //接受消息
        DeliverCallback deliverCallback = (var1, var2) ->
        {

            System.out.println("ReceiveLogs02控制台打印接口道的消息：-[]" + new String(var2.getBody(), "utf-8"));
        };


        //消费者取消消息时回调的接口
        channel.basicConsume(queueName, true, deliverCallback, var1 -> {
        }, null);

    }

}
